﻿<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<!-- saved from url=(0074)http://codelines.net.au/musing/genetic-algorithms-to-solve-sudoku-puzzels/ -->
<HTML xmlns="http://www.w3.org/1999/xhtml"><HEAD><TITLE>Using Genetic Algorithms in .NET to Solve Sudoku Puzzels - Part I</TITLE>
<META http-equiv=Content-Type content="text/html; charset=UTF-8">
<META content=index,follow name=robots>
<META content="MSHTML 6.00.2900.5880" name=GENERATOR><LINK media=screen 
href="Using Genetic Algorithms in _NET to Solve Sudoku Puzzels - Part I.files/style.css" 
type=text/css rel=stylesheet><LINK title="Codelines RSS Feed" 
href="http://codelines.net.au/feed/" type=application/rss+xml 
rel=alternate><LINK href="http://codelines.net.au/xmlrpc.php" rel=pingback><LINK 
href="http://codelines.net.au/wp-content/themes/StudioPress_Green/images/favicon.ico" 
type=image/x-ico rel=icon><LINK title=RSD 
href="http://codelines.net.au/xmlrpc.php?rsd" type=application/rsd+xml 
rel=EditURI><LINK href="http://codelines.net.au/wp-includes/wlwmanifest.xml" 
type=application/wlwmanifest+xml rel=wlwmanifest>
<META content="WordPress 2.6" name=generator>
<SCRIPT 
src="Using Genetic Algorithms in _NET to Solve Sudoku Puzzels - Part I.files/urchin.js" 
type=text/javascript>
</SCRIPT>

<SCRIPT type=text/javascript>
_uacct = "UA-1190122-1";
urchinTracker();
</SCRIPT>
<LINK media=screen 
href="Using Genetic Algorithms in _NET to Solve Sudoku Puzzels - Part I.files/wp-syntax.css" 
type=text/css rel=stylesheet>
<STYLE type=text/css>.recentcomments A {
	PADDING-RIGHT: 0px! important; DISPLAY: inline! important; PADDING-LEFT: 0px! important; PADDING-BOTTOM: 0px! important; MARGIN: 0px; PADDING-TOP: 0px! important
}
</STYLE>
</HEAD>
<BODY>
<DIV id=wrapper>
<DIV id=header>
<DIV class=topright>
<FORM id=searchform action=http://codelines.net.au/ method=get>
<DIV><INPUT id=searchbox name=s> <INPUT id=searchbutton type=submit> 
</DIV></FORM></DIV></DIV><!-- Closes Header -->
<DIV class=cleared></DIV>
<DIV id=underheader>
<DIV id=toprss><A href="feed:http://codelines.net.au/feed/"><IMG 
alt="grab our rss feed" 
src="Using Genetic Algorithms in _NET to Solve Sudoku Puzzels - Part I.files/grabrss.gif"></IMG></A> 
</DIV>
<H1 class=sitename><A href="http://codelines.net.au/">Codelines</A></H1>
<H2 class=sitedesc>Debugging the art of software</H2></DIV><!-- Closes underHeader -->
<DIV id=nav>
<UL>
  <LI><A title=Home href="http://codelines.net.au/"><SPAN>Home</SPAN></A></LI>
  <LI><A title="About Me" href="http://codelines.net.au/author/"><SPAN>About 
  Me</SPAN></A></LI></UL>
<DIV class=cleared></DIV></DIV><!-- Closes Nav -->
<DIV class=topcurvewhite></DIV>
<DIV id=main>
<DIV id=contentwrapper>
<DIV id=content>
<DIV class=adsense_top><!-- Insert your adsense code for a 468x60 banner right under here -->
<SCRIPT type=text/javascript><!--
google_ad_client = "pub-7558886108741219";
/* 468x60, created 8/18/08 */
google_ad_slot = "2958695779";
google_ad_width = 468;
google_ad_height = 60;
//-->
</SCRIPT>

<SCRIPT 
src="Using Genetic Algorithms in _NET to Solve Sudoku Puzzels - Part I.files/show_ads.js" 
type=text/javascript>
</SCRIPT>
</DIV>
<DIV class=post>
<H2 class=postTitle><A 
href="http://codelines.net.au/musing/genetic-algorithms-to-solve-sudoku-puzzels/">Using 
Genetic Algorithms in .NET to Solve Sudoku Puzzels - Part I</A></H2>
<DIV class=postMeta><SPAN class=date>May.20, 2006</SPAN> in <SPAN class=filed><A 
title="View all posts in Musing" 
href="http://codelines.net.au/categories/musing/" 
rel="category tag">Musing</A></SPAN> </DIV>
<DIV class=postContent>
<P>Uni work has been non stop at the moment. It’s a funny thing when you see 
several other groups of people coming into the same labs to work on assignments 
on weekends and consultation week. This weeks flavour of work for most was 
either Enterprise Java (I cannot wait till this one is over) and AI.</P>
<P>I’ll leave my thoughts on Enterprise Java for another time (because it will 
most likely turn into a rant ;)Current explorations into how genetic algorithms 
work has been quite interesting. The idea of borrowing ideas from nature 
(evolutionary pressure, recombination and mutation) to solve problems is an 
interesting one. Especially for us programmers <IMG class=wp-smiley alt=:) 
src="Using Genetic Algorithms in _NET to Solve Sudoku Puzzels - Part I.files/icon_smile.gif"> 
My initial thoughts behind creating a sudoku solver was something like:</P>
<UL>
  <LI>Sudoku class: to have a main Sudoku class to handle file reading (sudoku 
  puzzels), displaying the solution etc 
  <LI>SudokuAlgorithm interface: providing a generic solve(Problem) interface 
  for different algorithms to implement 
  <LI>Problem class: stored the base problem (an 81 integer array (9×9) along 
  with some other flags like ‘isSolved’, ‘hasSolution’ etc 
  <LI>SudokuException: Sudoku exceptions <IMG class=wp-smiley alt=:) 
  src="Using Genetic Algorithms in _NET to Solve Sudoku Puzzels - Part I.files/icon_smile.gif"> 

  <LI>Population class: A population class for things like InitPopulation, 
  GetFittest, Mutate, Evaluate 
  <LI>GA class: actual implementation of a GA </LI></UL>
<P>When I further started looking at thigs like repairing, different types of 
recombination (1 point, 2 point, 3 point…..cyclic, random), different types of 
selection processes (best, tournament, random) I thought it was about time for a 
bit of an overhaul and re-design.</P>
<P>So, classes got dropped and classes got added to cater for newer concepts and 
to hold abstract concepts a little better. More interfaces were added like 
<EM>IRecombination</EM> to allow a basic GA, or suped up GA to use different 
types of Recombination classes (crossover, cyclic, random and so on).</P>
<P>Some of the biggest mentions include the <EM>Gene</EM> and <EM>Chromsome</EM> 
classes. The basic int[81] array got replaced with a <EM>Gene</EM> class that 
could hold some extra information other then its value, like whether that gene 
was read only (a given in the sudoku board). So, using arrays of genes was a 
step further. It wasn’t until I started looking further into the process of 
beefing up the fitness(evaluation) function and a few other things that I 
realised it might be handy to go another step and add a Chromosome class, that 
would hold an array of 81 Genes.</P>
<P>This <EM>Chromsome</EM> class was a big, big step further. It would be a 
’smart Chromosome class’ that could give plenty of information on its gene 
structure. Rather then it being a dumb array of genes. It would know how to 
return a row of genes, or a column of genes, or a block of genes from within the 
chromosome itself. This of course maps the Sudoku problem domain perfectly.</P>
<P>At this point, it is no longer a basic GA. This then made it exceptionally 
easy to implement a good fitness function. The fitness function looks at the 
uniquness of each row. column or block (a perfect row, column or block should 
have exactly 1-9) and assigns it a value. This is done on all rows, to get a 
total row uniqueness, all columns and all blocks. Overall, representing how 
<EM>fit</EM> that chromosome (potential solution) is.</P>
<P>The individual algorithm applied is ((float)(1.0/(10-hashCount))/9.0). When 
calling NextRow, NextColumn, or NextBlock on the chromosome the Gene array is 
analysed and each value is added to a hashtable. A pefect sequence would have a 
count of exactly 9 elements, one with duplicats would have less then 9 elements. 
Hence, a perfect row would result in (1.0/10-9)/9 or .111111*. Nine perfect rows 
would give .9999999, as would columns and blocks. In the end, a perfect block, 
column or row would have a value of 1. The total fitness for a chromsome was 
then ‘totalRowsFitness * totalColumnsFitness * totalBlocksFitness’. All said and 
done, a ‘perfect’ sudoku board using the 3 main sudoku rules would have a 
fitness of 1.Further things were added to the ’smart Chromosome’ class to make 
repair operations, mutations and the like easier. All in all it incorporates 
functionality like this…</P>
<DIV class=wp_syntax>
<DIV class=code><PRE class=csharp><SPAN style="COLOR: #008080">#region Properties</SPAN>
<SPAN style="COLOR: #0600ff">public</SPAN> Gene<SPAN style="COLOR: #000000">[</SPAN><SPAN style="COLOR: #000000">]</SPAN> Genes
<SPAN style="COLOR: #0600ff">public</SPAN> Gene<SPAN style="COLOR: #000000">[</SPAN><SPAN style="COLOR: #000000">]</SPAN> NextColumn
<SPAN style="COLOR: #0600ff">public</SPAN> Gene<SPAN style="COLOR: #000000">[</SPAN><SPAN style="COLOR: #000000">]</SPAN> NextRow
<SPAN style="COLOR: #0600ff">public</SPAN> Gene<SPAN style="COLOR: #000000">[</SPAN><SPAN style="COLOR: #000000">]</SPAN> NextBlock
<SPAN style="COLOR: #0600ff">public</SPAN> List UnderRepresentedGenes
<SPAN style="COLOR: #0600ff">public</SPAN> List OverRepresentedGenes
<SPAN style="COLOR: #008080">#endregion#</SPAN>
&nbsp;
region <SPAN style="COLOR: #0600ff">Public</SPAN> Methods
<SPAN style="COLOR: #0600ff">public</SPAN> <SPAN style="COLOR: #0600ff">void</SPAN> ResetRow<SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">)</SPAN><SPAN style="COLOR: #008000">;</SPAN>
<SPAN style="COLOR: #0600ff">public</SPAN> <SPAN style="COLOR: #0600ff">void</SPAN> ResetColumn<SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">)</SPAN><SPAN style="COLOR: #008000">;</SPAN>
<SPAN style="COLOR: #0600ff">public</SPAN> <SPAN style="COLOR: #0600ff">void</SPAN> ResetSquare<SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">)</SPAN><SPAN style="COLOR: #008000">;</SPAN>
<SPAN style="COLOR: #0600ff">public</SPAN> <SPAN style="COLOR: #ff0000">int</SPAN> GeneFrequency<SPAN style="COLOR: #000000">(</SPAN>Gene gene<SPAN style="COLOR: #000000">)</SPAN><SPAN style="COLOR: #008000">;</SPAN>
<SPAN style="COLOR: #0600ff">public</SPAN> <SPAN style="COLOR: #0600ff">void</SPAN> GeneFrequenceyUpdate<SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">)</SPAN><SPAN style="COLOR: #008000">;</SPAN>
<SPAN style="COLOR: #0600ff">public</SPAN> <SPAN style="COLOR: #0600ff">void</SPAN> AddGene<SPAN style="COLOR: #000000">(</SPAN>Gene gene<SPAN style="COLOR: #000000">)</SPAN><SPAN style="COLOR: #008000">;</SPAN>
<SPAN style="COLOR: #0600ff">public</SPAN> <SPAN style="COLOR: #0600ff">void</SPAN> SwitchGenes<SPAN style="COLOR: #000000">(</SPAN>Gene gene, Gene, gene2<SPAN style="COLOR: #000000">)</SPAN><SPAN style="COLOR: #008000">;</SPAN>
<SPAN style="COLOR: #0600ff">public</SPAN> <SPAN style="COLOR: #ff0000">bool</SPAN> isUnderRepresented<SPAN style="COLOR: #000000">(</SPAN>Gene gene<SPAN style="COLOR: #000000">)</SPAN><SPAN style="COLOR: #008000">;</SPAN>
<SPAN style="COLOR: #0600ff">public</SPAN> <SPAN style="COLOR: #ff0000">bool</SPAN> isOverRepresented<SPAN style="COLOR: #000000">(</SPAN>Gene gene<SPAN style="COLOR: #000000">)</SPAN><SPAN style="COLOR: #008000">;</SPAN>
<SPAN style="COLOR: #0600ff">public</SPAN> <SPAN style="COLOR: #0600ff">void</SPAN> UpdateGeneFreqList<SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">)</SPAN><SPAN style="COLOR: #008000">;</SPAN>
<SPAN style="COLOR: #0600ff">public</SPAN> <SPAN style="COLOR: #0600ff">void</SPAN> ReplaceGene<SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #ff0000">int</SPAN> index, Gene gene<SPAN style="COLOR: #000000">)</SPAN><SPAN style="COLOR: #008000">;</SPAN>
<SPAN style="COLOR: #0600ff">public</SPAN> <SPAN style="COLOR: #0600ff">void</SPAN> ReplaceGene<SPAN style="COLOR: #000000">(</SPAN>Gene toReplace, Gene gene<SPAN style="COLOR: #000000">)</SPAN><SPAN style="COLOR: #008000">;</SPAN>
<SPAN style="COLOR: #0600ff">public</SPAN> <SPAN style="COLOR: #ff0000">object</SPAN> Clone<SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">)</SPAN><SPAN style="COLOR: #008000">;</SPAN></PRE></DIV></DIV>
<P>From above, you can see that you can actualy get quite a lot of information 
from the chromosome and have it do some nice things. When a chromosome becomes 
unbalanced, it essentialy knows how to balance itself by looking at how many 
under and over represented genes it has, switching these genes around until 
equilibrium is achieved.</P>
<P>Because a chromosome knows specific gene informatoin about rows, columns and 
blocks. Instead of the traditional crossover form of recombination, blocks, 
columns or rows could be recombined from each parent producing potentially 
better offspring. Especially if you do some pre analysis and take blocks etc 
that have a good fitness rating. Some solutions may never be found because a 
tradional crossover may never get the correct rows, blocks or columns from one 
part of the board into another part where it is actually needed. This method 
could help and thus prove to be very powerful inded.</P>
<P>At this point I am now starting to solve basic sudoku puzzels with 20, 30 or 
40 missing numbers. The biggest problem I am having is stagnation or 
convergence. My population often gets to around 60-70% of the solution before 
effectively cloning or converging together. Whilst mutation does help introduce 
new gene informatoin back into the pool, it’s often not enough when you have 
reached total convergence. Unless of course you implemented a form of dynamic 
mutation that looked at how close the population was from convergence.</P>
<P>Increased mutation as the population converged to a single chromosome point, 
or backed off mutation when there was a large amount of diversity already. This 
is something I might look at. All in all, from fitness functions, selection 
processes, recombination and mutation effects to smart chromosome structures and 
repair functions. Population sizes to generations running, there are a myriad of 
things that affect if, and how quickly a GA can get to a solution (if at 
all).Tech Tags: <A 
onclick="javascript:urchinTracker('/outbound/technorati.com/tag/C');" 
href="http://technorati.com/tag/C#" rel=tag>C#</A> <A 
onclick="javascript:urchinTracker('/outbound/technorati.com/tag/Sudoku');" 
href="http://technorati.com/tag/Sudoku" rel=tag>Sudoku</A> <A 
onclick="javascript:urchinTracker('/outbound/technorati.com/tag/GA');" 
href="http://technorati.com/tag/GA" rel=tag>GA</A> <A 
onclick="javascript:urchinTracker('/outbound/technorati.com/tag/Genetic+Algorithms');" 
href="http://technorati.com/tag/Genetic+Algorithms" 
rel=tag>Genetic+Algorithms</A> <A 
onclick="javascript:urchinTracker('/outbound/technorati.com/tag/Algorithms');" 
href="http://technorati.com/tag/Algorithms" rel=tag>Algorithms</A> <A 
onclick="javascript:urchinTracker('/outbound/technorati.com/tag/Puzzel');" 
href="http://technorati.com/tag/Puzzel" rel=tag>Puzzel</A> <A 
onclick="javascript:urchinTracker('/outbound/technorati.com/tag/Genes');" 
href="http://technorati.com/tag/Genes" rel=tag>Genes</A> <A 
onclick="javascript:urchinTracker('/outbound/technorati.com/tag/Chromosome');" 
href="http://technorati.com/tag/Chromosome" rel=tag>Chromosome</A> <A 
onclick="javascript:urchinTracker('/outbound/technorati.com/tag/Mutation');" 
href="http://technorati.com/tag/Mutation" rel=tag>Mutation</A><A 
onclick="javascript:urchinTracker('/outbound/technorati.com/tag/Programming');" 
href="http://technorati.com/tag/Programming" rel=tag>Programming</A></P></DIV>
<DIV class=postTags>Tags: <A href="http://codelines.net.au/tags/net/" 
rel=tag>.NET</A>, <A href="http://codelines.net.au/tags/c/" rel=tag>C#</A>, <A 
href="http://codelines.net.au/tags/software-development/" rel=tag>Software 
Development</A></DIV>
<P class=comments></P></DIV><!-- Closes Post -->
<DIV class=comment><!-- You can start editing here. --><!-- If comments are open, but there are no comments. -->
<H3 id=respond>Leave a Reply</H3>
<FORM id=commentform action=http://codelines.net.au/wp-comments-post.php 
method=post>
<P><INPUT id=author tabIndex=1 size=22 name=author> <LABEL 
for=author><SMALL>Name (required)</SMALL></LABEL></P>
<P><INPUT id=email tabIndex=2 size=22 name=email> <LABEL for=email><SMALL>Mail 
(will not be published) (required)</SMALL></LABEL></P>
<P><INPUT id=url tabIndex=3 size=22 name=url> <LABEL 
for=url><SMALL>Website</SMALL></LABEL></P><!--<p><small><strong>XHTML:</strong> You can use these tags: <code>&lt;a href=&quot;&quot; title=&quot;&quot;&gt; &lt;abbr title=&quot;&quot;&gt; &lt;acronym title=&quot;&quot;&gt; &lt;b&gt; &lt;blockquote cite=&quot;&quot;&gt; &lt;cite&gt; &lt;code&gt; &lt;del datetime=&quot;&quot;&gt; &lt;em&gt; &lt;i&gt; &lt;q cite=&quot;&quot;&gt; &lt;strike&gt; &lt;strong&gt; &lt;pre lang=&quot;&quot; line=&quot;&quot;&gt; </code></small></p>-->
<P><TEXTAREA id=comment tabIndex=4 name=comment rows=10 cols=100></TEXTAREA></P>
<P><INPUT id=submit tabIndex=5 type=submit name=submit> <INPUT type=hidden 
value=17 name=comment_post_ID> 
</P></FORM></DIV><!-- Closes Comments --></DIV></DIV><!-- Closes Content -->
<DIV id=allsidebars>
<DIV class=sidebarswrapper>
<DIV class=sidebars>
<DIV id=welcome>
<H2>Welcome</H2></DIV>
<DIV class=sidebarsbottom></DIV></DIV><!-- Closes Sidebars --></DIV><!-- Closes SidebarsWrapper -->
<DIV class=sidebarsB>
<DIV class=adsense_sidebar><!-- Insert your adsense code for a 336x280 rectangle right under here -->
<SCRIPT type=text/javascript><!--
google_ad_client = "pub-7558886108741219";
/* 336x280, created 8/18/08 */
google_ad_slot = "5207458633";
google_ad_width = 336;
google_ad_height = 280;
//-->
</SCRIPT>

<SCRIPT 
src="Using Genetic Algorithms in _NET to Solve Sudoku Puzzels - Part I.files/show_ads.js" 
type=text/javascript>
</SCRIPT>
</DIV>
<DIV class=sidebar1>
<UL><!--
<li>
<h2>Categories</h2>
<ul>
  	<li class="cat-item cat-item-3"><a href="http://codelines.net.au/categories/article/" title="View all posts filed under Article">Article</a>
</li>
	<li class="cat-item cat-item-4"><a href="http://codelines.net.au/categories/musing/" title="View all posts filed under Musing">Musing</a>
</li>
	<li class="cat-item cat-item-1"><a href="http://codelines.net.au/categories/uncategorized/" title="View all posts filed under Uncategorized">Uncategorized</a>
</li>
</ul>
</li>
-->
  <LI class=sidebaritem id=recent-posts>
  <H2 class=widgettitle>Recent Posts</H2>
  <UL>
    <LI><A 
    href="http://codelines.net.au/article/wcf-services-security-from-an-abc-apprach/">WCF 
    Services - Security From An ABC Approach </A>
    <LI><A 
    href="http://codelines.net.au/article/hosting-options-for-windows-communication-foundation-wcf-services/">Hosting 
    Options For Windows Communication Foundation (WCF) Services </A>
    <LI><A 
    href="http://codelines.net.au/article/information-dissemination-with-windows-communication-foundation-wcf/">Information 
    Dissemination With Windows Communication Foundation (WCF) </A>
    <LI><A 
    href="http://codelines.net.au/article/database-and-in-memory-paging-with-adonet-and-linq/">Database 
    And In-Memory Paging With ADO.NET And LINQ </A>
    <LI><A 
    href="http://codelines.net.au/article/benefits-of-the-ado-net-managed-provider-factory-model/">Benefits 
    of The ADO .Net Managed Provider Factory Model </A></LI></UL>
  <LI class=sidebaritem id=recent-comments>
  <H2 class=widgettitle>Recent Comments</H2>
  <UL id=recentcomments>
    <LI class=recentcomments><A 
    onclick="javascript:urchinTracker('/outbound/www.ezinepconline.com/5-compelling-reasons-why-code-size-matters.html');" 
    href="http://www.ezinepconline.com/5-compelling-reasons-why-code-size-matters.html" 
    rel="external nofollow">Computers and Technology Articles - 5 Compelling 
    Reasons Why Code Size Matters</A> on <A 
    href="http://codelines.net.au/article/do-you-recognise-the-4-early-warning-signs-of-design-pattern-abuse/#comment-582">Do 
    You Recognise the 4 Early Warning Signs of Design Pattern Abuse?</A>
    <LI class=recentcomments><A 
    href="http://codelines.net.au/article/wcf-services-security-from-an-abc-apprach/" 
    rel="external nofollow">WCF Services - Security From An ABC Approach</A> on 
    <A 
    href="http://codelines.net.au/article/hosting-options-for-windows-communication-foundation-wcf-services/#comment-581">Hosting 
    Options For Windows Communication Foundation (WCF) Services</A>
    <LI class=recentcomments><A 
    href="http://codelines.net.au/article/wcf-services-security-from-an-abc-apprach/" 
    rel="external nofollow">WCF Services - Security From An ABC Apprach</A> on 
    <A 
    href="http://codelines.net.au/article/information-dissemination-with-windows-communication-foundation-wcf/#comment-580">Information 
    Dissemination With Windows Communication Foundation (WCF)</A>
    <LI class=recentcomments><A 
    onclick="javascript:urchinTracker('/outbound/www.ezinepconline.com/5-surefire-ways-to-create-workplace-culture.html');" 
    href="http://www.ezinepconline.com/5-surefire-ways-to-create-workplace-culture.html" 
    rel="external nofollow">Computers and Technology Articles - 5 Surefire Ways 
    to Create Workplace Culture</A> on <A 
    href="http://codelines.net.au/article/what-is-workplace-culture-and-what-does-it-mean/#comment-579">What 
    is Workplace Culture and What Does it Mean?</A>
    <LI class=recentcomments><A 
    onclick="javascript:urchinTracker('/outbound/www.auta-ze-szwecji.cba.pl');" 
    href="http://www.auta-ze-szwecji.cba.pl/" rel="external nofollow">auta ze 
    szwecji</A> on <A 
    href="http://codelines.net.au/uncategorized/java-50/#comment-578">Java 5.0 
    Generics - The Beauty of Autboxing and Unboxing</A></LI></UL>
  <LI>
  <H2>Sponsors</H2><!-- Insert your adsense code for a 160x600 banner right under here -->
  <SCRIPT type=text/javascript><!--
google_ad_client = "pub-7558886108741219";
/* 160x600, created 8/18/08 */
google_ad_slot = "2402929751";
google_ad_width = 160;
google_ad_height = 600;
//-->
</SCRIPT>

  <SCRIPT 
  src="Using Genetic Algorithms in _NET to Solve Sudoku Puzzels - Part I.files/show_ads.js" 
  type=text/javascript>
</SCRIPT>
  </LI></UL></DIV><!-- Closes Sidebar1 -->
<DIV class=sidebar2>
<UL>
  <LI class=sidebaritem id=tag_cloud>
  <H2 class=widgettitle>Tags</H2><A class=tag-link-5 title="16 topics" 
  style="FONT-SIZE: 18.5pt" href="http://codelines.net.au/tags/net/" 
  rel=tag>.NET</A> <A class=tag-link-34 title="2 topics" 
  style="FONT-SIZE: 8.7pt" href="http://codelines.net.au/tags/adonet/" 
  rel=tag>ADO.NET</A> <A class=tag-link-6 title="10 topics" 
  style="FONT-SIZE: 14.3pt" 
  href="http://codelines.net.au/tags/agile-development/" rel=tag>Agile 
  Development</A> <A class=tag-link-23 title="12 topics" 
  style="FONT-SIZE: 15.7pt" href="http://codelines.net.au/tags/c/" 
  rel=tag>C#</A> <A class=tag-link-18 title="1 topic" style="FONT-SIZE: 8pt" 
  href="http://codelines.net.au/tags/computer-science/" rel=tag>Computer 
  Science</A> <A class=tag-link-29 title="1 topic" style="FONT-SIZE: 8pt" 
  href="http://codelines.net.au/tags/database-paging/" rel=tag>Database 
  Paging</A> <A class=tag-link-30 title="1 topic" style="FONT-SIZE: 8pt" 
  href="http://codelines.net.au/tags/database-provider-factory/" 
  rel=tag>Database Provider Factory</A> <A class=tag-link-28 title="1 topic" 
  style="FONT-SIZE: 8pt" 
  href="http://codelines.net.au/tags/database-provider-model/" rel=tag>Database 
  Provider Model</A> <A class=tag-link-31 title="1 topic" style="FONT-SIZE: 8pt" 
  href="http://codelines.net.au/tags/data-paging/" rel=tag>Data Paging</A> <A 
  class=tag-link-7 title="3 topics" style="FONT-SIZE: 9.4pt" 
  href="http://codelines.net.au/tags/development-process/" rel=tag>Development 
  Process</A> <A class=tag-link-25 title="1 topic" style="FONT-SIZE: 8pt" 
  href="http://codelines.net.au/tags/enterprise-architecture/" 
  rel=tag>Enterprise Architecture</A> <A class=tag-link-32 title="1 topic" 
  style="FONT-SIZE: 8pt" href="http://codelines.net.au/tags/extension-methods/" 
  rel=tag>Extension Methods</A> <A class=tag-link-8 title="3 topics" 
  style="FONT-SIZE: 9.4pt" href="http://codelines.net.au/tags/game-development/" 
  rel=tag>Game Development</A> <A class=tag-link-27 title="1 topic" 
  style="FONT-SIZE: 8pt" href="http://codelines.net.au/tags/games-programming/" 
  rel=tag>Games Programming</A> <A class=tag-link-9 title="6 topics" 
  style="FONT-SIZE: 11.5pt" href="http://codelines.net.au/tags/how-to/" 
  rel=tag>How To</A> <A class=tag-link-24 title="4 topics" 
  style="FONT-SIZE: 10.1pt" href="http://codelines.net.au/tags/java/" 
  rel=tag>Java</A> <A class=tag-link-10 title="7 topics" 
  style="FONT-SIZE: 12.2pt" href="http://codelines.net.au/tags/lifestyle/" 
  rel=tag>Lifestyle</A> <A class=tag-link-33 title="1 topic" 
  style="FONT-SIZE: 8pt" href="http://codelines.net.au/tags/linq/" 
  rel=tag>LINQ</A> <A class=tag-link-11 title="2 topics" 
  style="FONT-SIZE: 8.7pt" href="http://codelines.net.au/tags/programming/" 
  rel=tag>Programming</A> <A class=tag-link-12 title="8 topics" 
  style="FONT-SIZE: 12.9pt" href="http://codelines.net.au/tags/quick-tips/" 
  rel=tag>Quick Tips</A> <A class=tag-link-37 title="1 topic" 
  style="FONT-SIZE: 8pt" href="http://codelines.net.au/tags/security/" 
  rel=tag>Security</A> <A class=tag-link-13 title="4 topics" 
  style="FONT-SIZE: 10.1pt" href="http://codelines.net.au/tags/series/" 
  rel=tag>Series</A> <A class=tag-link-26 title="1 topic" style="FONT-SIZE: 8pt" 
  href="http://codelines.net.au/tags/softare-development/" rel=tag>Softare 
  Development</A> <A class=tag-link-14 title="16 topics" 
  style="FONT-SIZE: 18.5pt" href="http://codelines.net.au/tags/software-design/" 
  rel=tag>Software Design</A> <A class=tag-link-19 title="21 topics" 
  style="FONT-SIZE: 22pt" 
  href="http://codelines.net.au/tags/software-development/" rel=tag>Software 
  Development</A> <A class=tag-link-22 title="1 topic" style="FONT-SIZE: 8pt" 
  href="http://codelines.net.au/tags/software-modelling/" rel=tag>Software 
  Modelling</A> <A class=tag-link-21 title="4 topics" style="FONT-SIZE: 10.1pt" 
  href="http://codelines.net.au/tags/software-processes/" rel=tag>Software 
  Processes</A> <A class=tag-link-20 title="1 topic" style="FONT-SIZE: 8pt" 
  href="http://codelines.net.au/tags/software-testing/" rel=tag>Software 
  Testing</A> <A class=tag-link-35 title="3 topics" style="FONT-SIZE: 9.4pt" 
  href="http://codelines.net.au/tags/wcf/" rel=tag>WCF</A> <A class=tag-link-16 
  title="1 topic" style="FONT-SIZE: 8pt" 
  href="http://codelines.net.au/tags/web/" rel=tag>Web</A> <A class=tag-link-17 
  title="1 topic" style="FONT-SIZE: 8pt" 
  href="http://codelines.net.au/tags/web-20/" rel=tag>Web 2.0</A> <A 
  class=tag-link-36 title="3 topics" style="FONT-SIZE: 9.4pt" 
  href="http://codelines.net.au/tags/web-service/" rel=tag>Web Service</A>
  <LI class=sidebaritem id=categories-194032861>
  <H2 class=widgettitle>Categories</H2>
  <UL>
    <LI class="cat-item cat-item-3"><A 
    title="View all posts filed under Article" 
    href="http://codelines.net.au/categories/article/">Article</A> 
    <LI class="cat-item cat-item-4"><A title="View all posts filed under Musing" 
    href="http://codelines.net.au/categories/musing/">Musing</A> 
    <LI class="cat-item cat-item-1"><A 
    title="View all posts filed under Uncategorized" 
    href="http://codelines.net.au/categories/uncategorized/">Uncategorized</A> 
    </LI></UL>
  <LI class=sidebaritem id=archives>
  <H2 class=widgettitle>Archives</H2>
  <UL>
    <LI><A title="November 2008" 
    href="http://codelines.net.au/2008/11/">November 2008</A> 
    <LI><A title="October 2008" href="http://codelines.net.au/2008/10/">October 
    2008</A> 
    <LI><A title="September 2008" 
    href="http://codelines.net.au/2008/09/">September 2008</A> 
    <LI><A title="August 2008" href="http://codelines.net.au/2008/08/">August 
    2008</A> 
    <LI><A title="November 2007" 
    href="http://codelines.net.au/2007/11/">November 2007</A> 
    <LI><A title="June 2007" href="http://codelines.net.au/2007/06/">June 
    2007</A> 
    <LI><A title="February 2007" 
    href="http://codelines.net.au/2007/02/">February 2007</A> 
    <LI><A title="January 2007" href="http://codelines.net.au/2007/01/">January 
    2007</A> 
    <LI><A title="October 2006" href="http://codelines.net.au/2006/10/">October 
    2006</A> 
    <LI><A title="September 2006" 
    href="http://codelines.net.au/2006/09/">September 2006</A> 
    <LI><A title="August 2006" href="http://codelines.net.au/2006/08/">August 
    2006</A> 
    <LI><A title="June 2006" href="http://codelines.net.au/2006/06/">June 
    2006</A> 
    <LI><A title="May 2006" href="http://codelines.net.au/2006/05/">May 2006</A> 

    <LI><A title="April 2006" href="http://codelines.net.au/2006/04/">April 
    2006</A> 
    <LI><A title="March 2006" href="http://codelines.net.au/2006/03/">March 
    2006</A> </LI></UL></LI></UL></DIV><!-- Closes Sidebar2 -->
<DIV class=cleared></DIV></DIV><!-- Closes SidebarsB --></DIV><!-- Closes allsidebars -->
<DIV class=cleared></DIV></DIV><!-- Closes Main -->
<DIV class=bottomcurvewhite></DIV>
<DIV class=topcurve></DIV>
<DIV id=footer>
<DIV id=credits>
<P>© 2007 Codelines - <A 
onclick="javascript:urchinTracker('/outbound/www.dailyblogtips.com/wordpress-themes/');" 
href="http://www.dailyblogtips.com/wordpress-themes/">StudioPress Green 
Theme</P>
<P><A href="feed:http://codelines.net.au/feed/">Full RSS</A> - <A 
href="feed:http://codelines.net.au/comments/feed/">Comments RSS</A></P></DIV>
<DIV class=cleared></DIV></DIV><!-- Closes Footer -->
<DIV class=bottomcurve></DIV></DIV><!-- Closes Wrapper --><!-- 103bees.com 'bee' code v1.11 - please do not make any changes! -->
<SCRIPT 
src="Using Genetic Algorithms in _NET to Solve Sudoku Puzzels - Part I.files/bees" 
type=text/javascript></SCRIPT>
<!-- 103bees.com 'bee' code --></BODY></HTML>
